<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    var list = [
      {id:1,pid:'',name:'刘备'},
      {id:2,pid:1,name:'刘禅'},//parent id 父id
      {id:3,pid:'',name:'曹操'},
      {id:4,pid:3,name:'曹丕'},
      {id:5,pid:3,name:'曹植'},
      {id:6,pid:3,name:'曹冲'}
    ]



    //第一步 把一级找出来
    // var arr = []
    // list.forEach(item=>{
    //   if(item.pid === ''){
    //     //第二步 把一级的儿子找出来
    //     var arr1 = []//儿子不至一个
    //     list.forEach(item1=>{
    //       if(item1.pid === item.id){
    //         arr1.push(item1)
    //       }
    //     })
    //     item.children = arr1
    //     arr.push(item)
    //   }
    // })
    // console.log(arr)


    function fn(list,rootValue){
      var arr = []
      list.forEach(item=>{
        if(item.pid === rootValue){
          var children = fn(list,item.id)
          if(children.length){
            item.children = children
          }
          arr.push(item)
        }
      })
      return arr
    }

    fn(list,'')

    // function fn(list,rootValue){
    //   var arr = []
    //   list.forEach(item=>{
    //     if(item.pid === rootValue){
    //       var children = fn(list,item.id)
    //       if(children.length > 0 ){
    //         item.children = children
    //       }
    //       arr.push(item)
    //     }
    //   })
    //   return arr
    // }

    // console.log(fn(list,''))
    // var arr = []//存顶级 pid是空
    // list.forEach(item=>{
    //   if(item.pid === ''){//说明当前是顶级
    //     // 把这个顶级的儿子找出来
    //     var arr1 = []
    //     list.forEach(item1=>{
    //       if(item1.pid === item.id){
    //         var arr2 = []
    //         // list.forEach(item2=>{

    //         // })
    //         arr1.push(item1)
    //       }
    //     })
    //     item.children = arr1
    //     arr.push(item)
    //   }
    // })
    // console.log(arr)
  </script>
</body>
</html>
